
[dbo].[asi_HierarchyDeleteBranch]
CREATE PROCEDURE [dbo].[asi_HierarchyDeleteBranch] @hierarchyKey uniqueidentifier AS
DECLARE
@LowSort int, @HighSort int, @RootHierarchyKey uniqueidentifier
BEGIN
SELECT @RootHierarchyKey = a.RootHierarchyKey, @LowSort = a.SortOrder, @HighSort = Min(b.SortOrder)
FROM Hierarchy a LEFT OUTER JOIN Hierarchy b
ON a.RootHierarchyKey = b.RootHierarchyKey
AND a.SortOrder < b.SortOrder
AND a.Depth >= b.Depth
WHERE a.HierarchyKey = @hierarchyKey
GROUP BY a.RootHierarchyKey, a.SortOrder
IF @HighSort IS NOT NULL
BEGIN
DELETE
FROM Hierarchy
WHERE RootHierarchyKey = @RootHierarchyKey
AND SortOrder >= @LowSort
AND SortOrder < @HighSort
END
ELSE
BEGIN
DELETE
FROM Hierarchy
WHERE RootHierarchyKey = @RootHierarchyKey
AND SortOrder >= @LowSort
END
END
GO